package com.uade.services;

import org.apache.log4j.Logger;

import com.uade.model.Configuracion;
import com.uade.model.Modelo;
import com.uade.model.exceptions.BusinessException;
import com.uade.model.exceptions.LogisticaMonitoreoException;

public class LogCreator {

	private Logger log = Logger.getLogger(LogCreator.class);
	private LogSenderStrategy strategy;

	/**
	 * Generador de logs
	 * 
	 * @param xml
	 * @throws BusinessException
	 * @throws LogisticaMonitoreoException
	 */
	public void generarLog(String xml, Configuracion configuracion)
			throws BusinessException, LogisticaMonitoreoException {

		if (configuracion.getTipoDeServicio().equals(Modelo.JMS.toString())) {
			strategy = new LogJMS(configuracion);
		} else if (configuracion.getTipoDeServicio().equals(
				Modelo.WEB_SERVICE.toString())) {
			strategy = new LogWSImpl(configuracion);
		} else {
			log.error("No se pudo realizar el envio a auditoria: el campo tipo de servicio en una de las configuraciones es invalido: "
					+ configuracion.getTipoDeServicio());
			throw new BusinessException(
					"No se pudo realizar el envio a auditoria: el campo tipo de servicio en una de las configuraciones es invalido: "
							+ configuracion.getTipoDeServicio());
		}
		strategy.enviarLog(xml);
	}
}
